package main

import (
	"strconv"
	"strings"
)

// 判断当前年份是否是闰年
// 闰年2月是29天， 非闰年是 28天
// 先按照28天计算总天数， 再判断是否是闰年 需要加1
func dayOfYear(date string) int {
	// 拆分获取年月日
	sSlice := strings.Split(date, "-")
	year, _ := strconv.Atoi(sSlice[0])
	month, _ := strconv.Atoi(sSlice[1])
	day, _ := strconv.Atoi(sSlice[2])
	// 标记大月
	bigMonth := map[int]struct{}{1: {}, 3: {}, 5: {}, 7: {}, 8: {}, 10: {}, 12: {}}
	// 计算总天数
	totalDays := 0
	for i := 1; i < month; i++ {
		if i == 2 {
			totalDays += 28
			continue
		}
		// 如果是大月，31天
		if _, ok := bigMonth[i]; ok {
			totalDays += 1
		}
		totalDays += 30
	}
	totalDays += day

	// 如果月份大于2月 且是闰年，天数加一
	if month > 2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) {
		totalDays += 1
	}
	return totalDays
}
